import { defineStore } from 'pinia'
import { ref, readonly, computed } from 'vue'
export const useUserStore = defineStore(
  'user',
  () => {
    // 用户角色列表（家族内部层面）
    const USER_CLAN_ROLE_LIST = readonly<STORE.UserRoleInClan[]>([
      '普通用户',
      '家族普通成员',
      '家族管理员',
      '家族会长',
    ])
    // 用户角色列表（家族理事会层面）
    const USER_COUNCIL_ROLE_LIST = readonly<STORE.UserRoleInCouncil[]>([
      '普通理事会成员',
      '理事会成员',
      '理事会会长',
    ])
    //用户当前切换的家族的索引，根据用户账号所在的家族列表来
    const userCurrentClanIndex = ref<number>(0)
    //用户当前切换的家族的家族信息
    const userCurrentClan = computed<STORE.UserClanOrCouncilItem>(
      () => userClanList.value[userCurrentClanIndex.value],
    )
    const userCurrentCouncil = computed<STORE.UserClanOrCouncilItem | null>(() => {
      if (userCurrentClan.value && userCouncilList.value.length) {
        return (
          userCouncilList.value.find((item) => item.familyId === userCurrentClan.value.familyId) ||
          null
        )
      }
      return null
    })
    // 用户账号信息
    const userInfo = ref<STORE.UserInfo | null>(null)
    //用户账号所在的家族列表
    const userClanList = ref<STORE.UserClanOrCouncilItem[]>([])
    // 用户账号所在的理事会列表
    const userCouncilList = ref<STORE.UserClanOrCouncilItem[]>([])
    //记录是否已经登录
    const isLogin = ref<boolean>(false)
    //双token
    const token = ref<string>('')
    const refreshToken = ref<string>('')

    //获取token
    return {
      USER_CLAN_ROLE_LIST,
      USER_COUNCIL_ROLE_LIST,
      userClanList,
      userCouncilList,
      userCurrentClanIndex,
      userCurrentClan,
      userCurrentCouncil,
      userInfo,
      isLogin,
      token,
      refreshToken,
    }
  },
  { persist: true },
)
